import Vue from 'vue'
import router from './router/index'
import axios from 'axios'

const http = axios.create({
  baseURL: 'http://localhost:3000'
})


//添加请求拦截器 (目的是为了在发请求时在请求头中加token)
http.interceptors.request.use(config => {
  if (localStorage.token) {
    //在请求头中设置Authorization属性，发送token,'Bearer'表示类型(必须加)
    config.headers.Authorization = 'Bearer ' + localStorage.token
  }
  return config
}, err => {
  return Promise.reject(err)
})


//添加响应拦截器 (用来捕获服务端返回的异常状态，也可以在需要的页面上单独写，但不方便，一般写到这里表示全局)
http.interceptors.response.use(
  res => {//状态码正常走res
    return res
  },
  err => {//挡状态码大于400时会走err
    if (err.response.data.message) {
      //在vue原型上挂载element的一个提示方法，当未查询到用户（状态码422）时弹框提示
      Vue.prototype.$message({
        type: 'error',
        message: err.response.data.message
      })
      //当状态码为401时自动跳转回登录页
      if (err.response.status === 401) {
        router.push('/login')
      }
    } 
    
    return Promise.reject(err)
  })


export default http